{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 小数据量神经网络"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "# 引入必要的库包\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "         date  电力可供量(亿千瓦小时)  电力生产量(亿千瓦小时)  水电生产电力量(亿千瓦小时)  火电生产电力量(亿千瓦小时)  \\\n",
      "0  2004-01-01       21972.3       22033.1          3535.4         17955.9   \n",
      "1  2005-01-01       24940.8       25002.6          3970.2         20473.4   \n",
      "2  2006-01-01       28588.4       28657.3          4357.9         23696.0   \n",
      "3  2007-01-01       32712.4       32815.5          4852.6         27229.3   \n",
      "4  2008-01-01       34540.8       34668.8          5851.9         27900.8   \n",
      "\n",
      "   核电生产电力量(亿千瓦小时)  风电生产电力量(亿千瓦小时)  电力进口量(亿千瓦小时)  电力出口量(亿千瓦小时)  \\\n",
      "0           504.7           446.2          34.0          94.8   \n",
      "1           530.9           446.2          50.1         111.9   \n",
      "2           548.4           446.2          53.9         122.7   \n",
      "3           621.3           446.2          42.5         145.7   \n",
      "4           683.9           446.2          38.4         166.4   \n",
      "\n",
      "   电力能源消费总量(亿千瓦小时)  农、林、牧、渔业电力消费总量(亿千瓦小时)  工业电力消费总量(亿千瓦小时)  建筑业电力消费总量(亿千瓦小时)  \\\n",
      "0          21971.4                  768.9          16424.3             202.1   \n",
      "1          24940.3                  776.3          18521.7             233.9   \n",
      "2          28588.0                  827.0          21267.7             271.0   \n",
      "3          32711.8                  879.0          24290.8             309.0   \n",
      "4          34541.4                  887.1          25388.6             367.3   \n",
      "\n",
      "   交通运输、仓储和邮政业电力消费总量(亿千瓦小时)  批发和零售业、住宿和餐饮业电力消费总量(亿千瓦小时)  其他电力消费总量(亿千瓦小时)  \\\n",
      "0                     449.6                       705.4           1036.6   \n",
      "1                     430.3                       752.3           1340.9   \n",
      "2                     467.4                       847.3           1555.9   \n",
      "3                     531.9                       929.8           1708.6   \n",
      "4                     571.8                      1017.4           1913.0   \n",
      "\n",
      "   居民生活电力消费总量(亿千瓦小时)  电力终端消费量(亿千瓦小时)  工业终端电力消费量(亿千瓦小时)  输配电损失量(亿千瓦小时)  \n",
      "0             2384.5         20550.8           15003.7         1420.6  \n",
      "1             2884.8         23233.8           16815.2         1706.5  \n",
      "2             3351.6         26729.1           19408.9         1858.8  \n",
      "3             4062.7         30650.1           22229.1         2061.7  \n",
      "4             4396.1         32403.5           23250.8         2137.9  \n"
     ]
    }
   ],
   "source": [
    "# 数据导入\n",
    "df = pd.read_csv('../ClearData/Electricity_20_bfill_date.csv', encoding='utf-8')\n",
    "# 打印出数据的前5行，检查数据是否导入正确\n",
    "print(df.head())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "# Define the neuron\n",
    "def neuron(normal_demands, learn, lA):\n",
    "    normal_demands = np.array(normal_demands)\n",
    "    weights = np.random.rand(len(normal_demands))\n",
    "    sigmoid = 0\n",
    "    error1 = 2\n",
    "\n",
    "    while error1 >= 0.001:\n",
    "        x = np.dot(weights, normal_demands)\n",
    "        sigmoid = 1 / (1 + np.exp(-x))\n",
    "        error1 = (learn - sigmoid) * sigmoid * (1 - sigmoid)\n",
    "        weights = weights + lA * error1 * normal_demands\n",
    "\n",
    "    return weights, sigmoid\n",
    "\n",
    "# Define the neural network\n",
    "def neural_network(input_data, target, learning_rate):\n",
    "    hidden_layer = []\n",
    "    for _ in range(3):  # Create three neurons\n",
    "        weights, sigmoid = neuron(input_data, target, learning_rate)\n",
    "        hidden_layer.append((weights, sigmoid))\n",
    "\n",
    "    # Output layer\n",
    "    output_weights, output_sigmoid = neuron([sigmoid for _, sigmoid in hidden_layer], target, learning_rate)\n",
    "\n",
    "    return hidden_layer, (output_weights, output_sigmoid)\n",
    "\n",
    "# Use the neural network for prediction\n",
    "def predict(network, input_data):\n",
    "    hidden_layer, output_layer = network\n",
    "    hidden_layer_output = [1 / (1 + np.exp(-np.dot(weights, input_data))) for weights, _ in hidden_layer]\n",
    "    output = 1 / (1 + np.exp(-np.dot(output_layer[0], hidden_layer_output)))\n",
    "\n",
    "    return output\n",
    "\n",
    "# Training and prediction\n",
    "def train_and_predict(df, column_name, learning_rate):\n",
    "    # Convert the DataFrame column to a one-dimensional array\n",
    "    data = df[column_name].values\n",
    "    print(data)\n",
    "    # Initialize the network\n",
    "    network = None\n",
    "\n",
    "    # Predictions\n",
    "    predictions = []\n",
    "\n",
    "    # Train and predict\n",
    "    for i in range(3, len(data)):\n",
    "        network = neural_network(data[i-3:i], data[i], learning_rate)\n",
    "        if i < len(data) - 3:\n",
    "            predictions.append(predict(network, data[i+1:i+4]))\n",
    "\n",
    "    return predictions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.25817266 0.29296775 0.33579166 0.38451534 0.40623136 0.43526379\n",
      " 0.49297361 0.55224771 0.58441574 0.63645194 0.67896535 0.68132173\n",
      " 0.71865249 0.77387585 0.83969066 0.87921376 0.91151068 1.        ]\n",
      "[0.7246865679254912, 0.7287955502873841, 0.6681579838030198, 0.7726658781864812, 0.6417381352604268, 0.672118607656431, 0.7020198168564414, 0.6827172464480556, 0.8028280430638128, 0.7462467338653789, 0.7818322820927622, 0.8778539717189089]\n"
     ]
    }
   ],
   "source": [
    "learning_rate = 0.01\n",
    "# 数据归一化\n",
    "df['电力生产量(亿千瓦小时)'] = df['电力生产量(亿千瓦小时)'] / df['电力生产量(亿千瓦小时)'].max()\n",
    "\n",
    "# Train the network and get the predictions\n",
    "predictions = train_and_predict(df, '电力生产量(亿千瓦小时)', learning_rate)\n",
    "\n",
    "# Print the predictions\n",
    "print(predictions)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 画图可视化展示预测结果\n",
    "plt.plot(predictions, label='Predictions')\n",
    "plt.plot(df['电力生产量(亿千瓦小时)'].values[3:], label='Actual')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "tf",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
